package com.atzexu.web.controller;

import com.atzexu.domain.dto.AddIntegratingDTO;
import com.atzexu.domain.User;
import com.atzexu.service.UserService;
import com.atzexu.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.util.List;

@RestController
@RequestMapping("/v1/user")
public class UserController {
    @Autowired
    private UserService userService;


    /**
     * 通过课程id查询班级学生信息
     *
     * @param
     * @return
     */
    @GetMapping("/findByClassId")
    // TODO 没有获取前端传来的课程id
    public R findByClassId(HttpSession session) {
        Integer classId = null;
        List<User> list = null;
        // 通过登录成功后存放在session域中的对象，获取classId
        Object user = session.getAttribute("user");
        // 获取课程id
        if (user instanceof User) {
            classId = ((User) user).getClassId();
        }

        // TODO 是学生不查 是老师查询班级全部学生
        if (classId != null) {
            list = userService.findByClassId(classId);
            if (((User) user).getRoleId() == 2) {  // 说明登录的用户是学生
                list = null;
            }
        }
        return new R(0, "操作成功", list);
    }

    /**
     * 添加用户积分
     *
     * @param user
     * @return
     */
    @PostMapping("/addIntegral")
    public R addIntegral(@RequestBody AddIntegratingDTO user) {
        boolean flag = userService.addIntegral(user);
        R r = null;
        if (flag) {
            r = new R(0, "操作成功", "添加积分成功");
        } else {
            r = new R(0, "操作失败", "添加积分失败");
        }
        return r;
    }

    /**
     * 重置小组积分
     *
     * @param classId
     * @return
     */
    @GetMapping("/resetGScoreByGroupId/{classId}")
    public R resetGScoreByGroupId(@PathVariable Integer classId) {
        // 点击重置班级小组积分后 将班级内所有人的积分置为0
        System.out.println(classId);
        boolean flag = userService.resetGScoreByGroupId(classId);
        return new R(0, "操作成功", "重置成功");
    }
}
